package cz.pecinovsky.english.pojj.adv_demo.byt_lednička.hra;

import static cz.pecinovsky.english.pojj.adv_demo.byt_lednička.
              hra.Texty.*;


/*******************************************************************************
 * Instance třídy {@code PříkazPřečti} představuje příkaz,
 * kterým se hráč snaží přečíst nápis na předmětu, který drží v ruce.
 *
 * @author    Rudolf PECINOVSKÝ
 * @version   0.00.000
 */
public class PříkazPřečti extends APříkaz
{
//== KONSTANTNÍ ATRIBUTY TŘÍDY =================================================
//== PROMĚNNÉ ATRIBUTY TŘÍDY ===================================================
//== KONSTANTNÍ ATRIBUTY INSTANCÍ ==============================================
//== PROMĚNNÉ ATRIBUTY INSTANCÍ ================================================
//== PŘÍSTUPOVÉ METODY VLASTNOSTÍ TŘÍDY ========================================
//== OSTATNÍ NESOUKROMÉ METODY TŘÍDY ===========================================

//##############################################################################
//== KONSTRUKTORY A TOVÁRNÍ METODY =============================================

    /***************************************************************************
     * Vytvoří instanci mající na strosti reakci na příkaz <b>jdi</b>,
     * po jehož zadaní se hráč přesune do místnosti,
     * jejíž název bude uveden za příkazem.
     */
    public PříkazPřečti()
    {
        super( pPŘEČTI, //"Přečti",
               "Přečte text na zadaném objektu,\n" +
               "přičemž musí tento objekt držet v ruce." );
    }


//== ABSTRAKTNÍ METODY =========================================================
//== PŘÍSTUPOVÉ METODY VLASTNOSTÍ INSTANCÍ =====================================
//== OSTATNÍ NESOUKROMÉ METODY INSTANCÍ ========================================

    /***************************************************************************
     * Vypíše hráči nápis na zadaném předmětu, který hráč držíá v ruce;
     * před tím však zkontroluje, zda je vůbec zadaná předmět, který se má
     * přečíst a zda tento předmět drží hráč v ruce.
     * Není-li předmětem papír, oznámí, že na předmětu není žádný nápis.
     * Před čtením papíru nejprve zkontroluje, zda má hráč nasazeny brýle.
     *
     * @param parametry Jediným smysluplným parametrem v tétho hře je papír
     * @return Text zpravy vypsane po porovedeni prikazu
     */
    @Override
    public String execute( String... parametry )
    {
        if (parametry.length == 0) {
            return "Není zadán předmět, který se má přečíst";
        }
        String predmet = parametry[0];
        if (! Hra_BytLednička.getHra().getBag().obsahuje(predmet)) {
            return "Zadaný předmět nelze přečíst, protože jej nedržíte: " +
                   predmet;
        }
        if (! predmet.equalsIgnoreCase("papír")) {
             return "Na předmětu " + predmet + " není žádný nápis.";
        }
        if (! Stav.BRYLE_NASAZENY) {
            return CHCE_PŘEČÍST_VZKAZ + NEMÁ_BRÝLE;
//            return "Rozhodl(a) jste se přečíst vzkaz na papíře.\n" +
//                   "Je ale psán příliš malým písmem, které je rozmazané";
        }
        return NAPSÁNO;
//        return "Na papíře je napsáno:\n" +
//               "Lednička stojí nakřivo, a proto jde špatně otevírat.\n" +
//               "Budete-li mít problémy, něčím ji podložte.";
    }



//== SOUKROMÉ A POMOCNÉ METODY TŘÍDY ===========================================
//== SOUKROMÉ A POMOCNÉ METODY INSTANCÍ ========================================
//== VNOŘENÉ A VNITŘNÍ TŘÍDY ===================================================
//== TESTY A METODA MAIN =======================================================
//
//    /***************************************************************************
//     * Testovací metoda.
//     */
//    public static void test()
//    {
//        PrikazJdi x = new PrikazJdi();
//    }
//    /** @param args Parametry příkazového řádku - nepoužívané. */
//    public static void main( String[] args )  {  test();  }
}
